// https://leetcode.cn/problems/sum-of-two-integers

class Solution {
public:
    int getSum(int a, int b) {
        // 不讲武德,不管要求
        // return a + b;

        // ^异或得到无进位相加的结果
        // &相与得到进位
        // 重复两步操作,直到进位是0
        while(b) {
            int x = a ^ b; // 无进位相加的结果
            // 计算进位,uint防止负数情况,右移没有意义
            unsigned int carry = (unsigned int)((a & b) << 1); 
            a = x, b = carry;
        }
        return a;
    }
};